package com.atguigu.chaptar1

object Test1 {
  /**
   * 1、对数组中的每个元素进行操作,操作规则由外部决定
   * Array("spark","hello","java","hadoop")
   * 规则: 获取每个元素的长度 [不确定]
   * 结果: Array(5,5,4,6)
   */

  //1.高阶函数的定义,确认func规则函数操作什么类型参数,返回什么类型结果
  def getLength(x:Array[String],func:String=>Int)={
    //2.巧用yield表达式获得调用func()函数后返回的结果集Array[Int]
    for(a<-x)yield{
      func(a)
    }
  }
  def main(args: Array[String]): Unit = {
    val a = Array("spark","hello","java","hadoop")
    //3.外界定义func函数的规则
    val func = (x:String)=>x.length
    //4.规则定义完成后,传入getLength方法获取结果
    println(getLength(a, func).toList)
    //传入getLength时func值传递的终极简化版
    getLength(a,_.length)
  }

}
